import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'  # 去警告
import tensorflow as tf

def default_graph_demo():
    """
    默认图的演示
    :return:
    """
    a = tf.constant(2, name="a")
    b = tf.constant(3)
    c = tf.add(a, b)
    # 查看数据输出
    print("a:", a)
    print("b:", b)
    print("c:", c)
    # 查看默认图
    # 方法1：调用方法
    default_g = tf.compat.v1.get_default_graph()
    print("default_g:", default_g)
    # 方法2：查看属性
    # print("a的图属性：", a.graph) # 2.x 中不支持
    return None

def user_graph_demo():
    """
    自定义图的演示
    :return:
    """
    g = tf.Graph()
    # 在上下文管理器内部就可以定义用户自己创建图的数据和操作
    with g.as_default():
        a = tf.constant(2)
        c = a
    # 执行图阶段
    # 方式1：
    with tf.compat.v1.Session(graph=g) as sess:
        c_value = sess.run(c)
        print(c_value)
        print("我们自己创建的图为：\n", sess.graph)

    # 方式2：（包括会话的开启和关闭）
    # sess = tf.compat.v1.Session(graph=g)
    # c_t_value = sess.run(c_t)
    # print(c_t_value)
    # sess.close()
    return None

if __name__ == "__main__":
    # 代码2：默认图的演示
    default_graph_demo()
    # 代码3：默认图的演示
    user_graph_demo()